home *** CD-ROM | disk | FTP | other *** search
/ L' Effet Pommier 2 / L'Effet Pommier - Volume 02.iso / Arcade / Bolo / More information / Bolo.BrainsFAQ next >
Text File  |  1995-04-28  |  7KB  |  133 lines

  1. Bolo ⌐ 1987-1995 Stuart Cheshire <cheshire@cs.stanford.edu>
  2.  
  3. Frequently Asked Questions (and Frequently Suggested Ideas).
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5. Before you write to me with suggestions for the next version of Bolo, please read these frequently asked questions files, and read the "Bolo.futureplans" file to see if your suggestion is already on the list.
  6.  
  7. This file deals with frequently asked questions from Brain writers. It is compiled by Kovas Boguta <VISITOR@uicws.phy.uic.edu>
  8.  
  9. Ñ╩"What is the basic clock rate for Bolo?"
  10. The basic "tick" in Bolo is 1/50th second.
  11.  
  12. Ñ╩"How is the firing for pillboxes controlled?"
  13. A pillbox fires once every x ticks. For a quiescent pillbox x is 100 (two seconds). Each time it is hit, x halves, down to a minimum of 4 ticks (12.5 shots per second). x 'relaxes' back to the quiescent state at a rate of one unit every 32 ticks.
  14. Pillboxes will shoot at you if you are within 8 map squares (2048 World units).
  15. Pillbox shots go nine map squares (2304 World units).
  16.  
  17. Ñ╩"How is refuelling controlled?"
  18. Refuelling bases refuel a tanks armour first, then shells, then mines. Armour is repaired at the rate of at most one unit per second. Shells and mines refuel at a rate of at most ten per second. (These rates may be lower in practice due to network delays.)
  19. Every twenty seconds refuelling bases replenish their stocks by one unit per player in the game. For example, if there are five players in the game, then refuelling bases will replenish by five units every 20 seconds.
  20.  
  21. Ñ╩"What are the various maximum speeds of things in Bolo?"
  22. The speed of a bullet is 32 World units per tick. The top speed of a tank on a boat is 16 World units per tick. Some other speeds are:
  23.  
  24.     Terrain        Tank speed  Man speed
  25.     BUILDING           0           0
  26.     RIVER              3           0
  27.     SWAMP              3           4
  28.     CRATER             3           4
  29.     ROAD              16          16
  30.     FOREST             6           8
  31.     RUBBLE             3           4
  32.     GRASS             12          16
  33.     HALFBUILDING       0           0
  34.     BOAT               3          16
  35.     REFBASE/PILLBOX   16          16
  36.  
  37. Ñ╩"What example brain code is available and where can i get it, and what other
  38. documents have information on writing brains?"
  39.  
  40. There is publicly available code of Indy 1.0, Standard Autopilot, Headset,
  41. Ricklesbot, Decayed Brain. Also, there is the Bolo Brain Message Parsing
  42. Library.  Of these, only Indy and Standard Auto are full brains, while Headset
  43. and Ricklesbot are `borgs. Decayed Brain only captures bases so it cant be
  44. considered a full bot. Most of these can be found at the various bolo ftp sites.
  45. Standard Autopilot is included in the Bolo package along with documentation on
  46. how to write brains.
  47.  
  48. Ñ╩"Can you really only allocate 32K of memory from the heap?  It seems Indy
  49. 2.02 allocates it out of Bolo's heap, instead of from Multifinder temporary
  50. memory?"
  51.  
  52. No, there is not a limit.  You do have to increase the Bolo Application
  53. partition though.  Both Ladmo and Indy allocate memory from the
  54. Bolo Application heap.  DK'd Brain, on which Ladmo is originally based,
  55. took temporary memory from the system, through the use of temphandles.
  56. I forget what version, but I changed Ladmo to take from the Bolo heap instead,
  57. because of a couple of reasons:  a bit easier to determine how much memory
  58. is available, memory available is less likely to change, if it crashes
  59. it takes down only Bolo and not the whole system.
  60.  
  61. Ñ╩"What starting information is passed to the brain?  I couldn't find this,
  62. but I remember something about bases only."
  63.  
  64. First look at the Brain.h.  The BrainInfo is passed on every think call,
  65. and in the Brain.h Stuart describes more on what is passed and when.  When
  66. starting a game it is just like any other time, you are passed what you own,
  67. what you see and the location of the neutral bases.
  68.  
  69. Ñ╩"Is there a way to access the map information?  If other players have
  70. played/seen the map before, the brain should have the same advantage."
  71.  
  72. The only Brain I have seen that load in the map ahead of time is
  73. "Will's Brain" by Will Uther which is not longer in production.  Will
  74. is now working with me on Ladmo.  I don't know if Ladmo will have this
  75. feature in a later version, we haven't discussed it yet.  Anyway, Stuart
  76. provides the structure of map files in the Bolo package.  If you wanted
  77. the option to load in the map you can add it.
  78.  
  79. Ñ╩"Is there a way to tell when a neutral, or hostile, pillbox has been
  80. taken?"
  81.  
  82. Nope, and it is a bummer.  The only way to tell is by seeing it happen or
  83. seeing it gone later.
  84.  
  85. Ñ╩"Can a brain tell how many neutral bases remain?"
  86.  
  87. Yes, you get passed the location of all the neutral bases on each THINK
  88. call.  So you can of course count them up.
  89.  
  90. Ñ╩"Do bots have access to audio information?"
  91.  
  92. No.
  93.  
  94. Ñ╩"I notice that my brain sometimes crashes when control is transferred from
  95. my brain back to Bolo. Is it possible that there are some memory operations
  96. or writes to the info/message struct which may cause Bolo to crash?"
  97.  
  98. I originally though that I was overrunning my allocated memory,
  99. or doing something inadvertently with memory allocated by way of NewPtr, but
  100. am starting to doubt this.
  101.  
  102. Sounds like you are writing to somewhere you shouldn't be.  I've had
  103. problems with crashes when I call NewHandle (and not have enough memory).
  104. I think this might be a fault with Bolo's Grow function (whatever it's
  105. called) since it bombs if I request more memory than Bolo has been
  106. allocated.
  107.  
  108. Also check to make sure that you are not modifying the Quickdraw Globals.
  109. This could be a no no (Although changing the message text font is sometimes
  110. interesting...)
  111.  
  112. Ñ╩"The crashes are usually accompanied by the (unhelpful) floating point
  113. co-processor not installed (ID 25) system crash message."
  114.  
  115. This is probably a problem in your brain.  By any chance you have some
  116. floating point calls and 'Generate 68881 instructions' checked in Think C.
  117.  
  118. Ñ╩"Is it possible for messages sent in rapid succession (eg on successive
  119. think calls) to become scrambled/lost/truncated during transmission? Also,
  120. is it possible to send/recieve the full 0x01 to 0xFF character range,
  121. or only a subset thereof? I have found messages containing compressed map
  122. data to suffer from losses/scrambling every now and then even though the
  123. decoding/encoding algorithms are compatible when run together in
  124. another application."
  125.  
  126. YES.  You really need to watch out for this.  Once a message has been sent,
  127. Bolo blanks out the sendmessage field (Data->sendmessage[0]==0).  So just
  128. check this before sending a new packet.
  129.  
  130. I think you can send characters from 0x01 to 0xff.  However some characters
  131. will look weird on the other player's end (Make sure you don't send the
  132. data to yourself).
  133.